class Test {
    public static class Base {
        private void invoke() {
            System.out.println("I am Base class invoke method");
        }

        public void invoke2() {
            System.out.println("I am Base class invoke2 method");
        }

        protected void invoke3() {
            System.out.println("I am Base class invoke3 method");
        }
    }

    public static class Child extends Base {
       /**  @Override
        * Base class private method hide for Child class
        * by super can invoke Base class private method,
        * Beacause Class self can access private method by yourself.
        * Child class don't override Base class's private method.
        * so add @Override before invoke method,will compile error.
        */
        protected void invoke() {
            super.invoke();
            System.out.println("I am Child class invoke method");
        }

        /**
         * Child class can't override Base class method
         * access < Base class method.
        @Override
        protected void invoke2() {
            System.out.println("I am Child invoke2 method");
        }
        */

        @Override
        public void invoke3() {
            System.out.println("I am Child invoke3 method");
        }
    }
    
    public static void main(String [] args) {
        Child child = new Child();
        child.invoke();

    }
}
